/**
 * 给定一个整数数组 nums，处理以下类型的多个查询:
 *
 * 计算索引left和right（包含 left 和 right）之间的 nums 元素的 和 ，其中left <= right
 * 实现 NumArray 类：
 *
 * NumArray(int[] nums) 使用数组 nums 初始化对象
 * int sumRange(int i, int j) 返回数组 nums中索引left和right之间的元素的 总和 ，包含left和right两点（也就是nums[left] + nums[left + 1] + ... + nums[right])
 *
 * 链接：https://leetcode.cn/problems/range-sum-query-immutable
 * 标准的前缀和问题，核心思路是用一个新的数组 preSum 记录 nums[0..i-1] 的累加和
 */
class NumArray {
        int[] presum;
    public NumArray(int[] nums) {
        int len=nums.length;
        presum=new int[len+1];
        for(int i=1;i<=len;i++) {
            presum[i]=presum[i-1]+nums[i-1];
        }
    }
    
    public int sumRange(int left, int right) {
        return presum[right+1]-presum[left];
    }
}

/**
 * Your NumArray object will be instantiated and called as such:
 * NumArray obj = new NumArray(nums);
 * int param_1 = obj.sumRange(left,right);
 */